<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Carbon\Carbon;

class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        // 创建100个真实用户数据
        $users = [];
        
        // 中国城市数据
        $cities = [
            '北京', '上海', '广州', '深圳', '杭州', '南京', '苏州', '成都', '重庆', '武汉',
            '西安', '天津', '青岛', '大连', '厦门', '福州', '长沙', '郑州', '济南', '沈阳',
            '哈尔滨', '长春', '石家庄', '太原', '呼和浩特', '合肥', '南昌', '南宁', '海口', '贵阳',
            '昆明', '拉萨', '兰州', '西宁', '银川', '乌鲁木齐', '台北', '香港', '澳门'
        ];
        
        $provinces = [
            '北京市', '上海市', '广东省', '浙江省', '江苏省', '四川省', '湖北省', '陕西省', '天津市', '山东省',
            '辽宁省', '福建省', '湖南省', '河南省', '河北省', '山西省', '内蒙古自治区', '安徽省', '江西省', '广西壮族自治区',
            '海南省', '贵州省', '云南省', '西藏自治区', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区', '台湾省', '香港特别行政区', '澳门特别行政区'
        ];
        
        // 常见中文昵称
        $nicknames = [
            '小明', '小红', '小李', '小王', '小张', '小刘', '小陈', '小杨', '小黄', '小周',
            '小吴', '小徐', '小孙', '小马', '小朱', '小胡', '小郭', '小何', '小高', '小林',
            '小罗', '小郑', '小梁', '小谢', '小宋', '小唐', '小许', '小韩', '小冯', '小邓',
            '美食达人', '吃货小王', '美食家', '味蕾探索者', '美食爱好者', '吃货小张', '美食博主', '味觉大师',
            '美食探索家', '吃货小李', '美食达人小王', '味蕾专家', '美食鉴赏家', '吃货小陈', '美食评论家', '味觉达人',
            '美食家小刘', '吃货小杨', '美食探索者', '味蕾大师', '美食爱好者小黄', '吃货小周', '美食达人小吴', '味觉专家',
            '美食家小徐', '吃货小孙', '美食探索家小马', '味蕾达人', '美食爱好者小朱', '吃货小胡', '美食博主小郭', '味觉探索者'
        ];
        
        // 头像URL模板
        $avatarTemplates = [
            'https://picsum.photos/200/200?random=',
            'https://via.placeholder.com/200x200/FF6B6B/FFFFFF?text=',
            'https://via.placeholder.com/200x200/4ECDC4/FFFFFF?text=',
            'https://via.placeholder.com/200x200/45B7D1/FFFFFF?text=',
            'https://via.placeholder.com/200x200/96CEB4/FFFFFF?text=',
            'https://via.placeholder.com/200x200/FFEAA7/FFFFFF?text=',
            'https://via.placeholder.com/200x200/DDA0DD/FFFFFF?text=',
            'https://via.placeholder.com/200x200/98D8C8/FFFFFF?text=',
        ];
        
        for ($i = 1; $i <= 20; $i++) {
            // 第一个用户设置为管理员
            if ($i === 1) {
                $users[] = [
                    'openid' => 'admin_openid_' . md5('admin_' . time()),
                    'unionid' => null,
                    'nickname' => '管理员',
                    'password' => Hash::make('password'),
                    'avatar' => 'https://via.placeholder.com/200x200/FF6B6B/FFFFFF?text=Admin',
                    'phone' => '13800138000',
                    'gender' => 1, // 男
                    'city' => '北京',
                    'province' => '北京市',
                    'country' => '中国',
                    'language' => 'zh_CN',
                    'last_login_at' => Carbon::now()->subHours(1),
                    'is_active' => true,
                    'created_at' => Carbon::now()->subDays(30),
                    'updated_at' => Carbon::now()->subHours(1),
                ];
                continue;
            }
            
            $gender = rand(0, 2); // 0-未知, 1-男, 2-女
            $city = $cities[array_rand($cities)];
            $province = $provinces[array_rand($provinces)];
            $nickname = $nicknames[array_rand($nicknames)] . ($i > 10 ? $i : '');
            $avatarTemplate = $avatarTemplates[array_rand($avatarTemplates)];
            
            // 生成手机号
            $phone = '1' . rand(3, 9) . rand(100000000, 999999999);
            
            // 生成微信openid
            $openid = 'wx_openid_' . md5('user_' . $i . '_' . time());
            
            // 生成unionid (30%概率)
            $unionid = rand(1, 10) <= 3 ? 'wx_unionid_' . md5('user_' . $i . '_union') : null;
            
            // 生成最后登录时间 (最近30天内)
            $lastLoginAt = Carbon::now()->subDays(rand(0, 30))->subHours(rand(0, 23))->subMinutes(rand(0, 59));
            
            $users[] = [
                'openid' => $openid,
                'unionid' => $unionid,
                'nickname' => $nickname,
                'password' => null, // 普通用户不需要密码
                'avatar' => $avatarTemplate . urlencode(substr($nickname, 0, 1)),
                'phone' => $phone,
                'gender' => $gender,
                'city' => $city,
                'province' => $province,
                'country' => '中国',
                'language' => 'zh_CN',
                'last_login_at' => $lastLoginAt,
                'is_active' => rand(1, 10) <= 9, // 90%用户激活
                'created_at' => Carbon::now()->subDays(rand(1, 90)),
                'updated_at' => Carbon::now()->subDays(rand(0, 30)),
            ];
        }
        
        // 批量插入用户数据
        User::insert($users);
        
        $this->command->info('已创建 20 个用户数据（包含1个管理员）');
    }
}
